﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Interop.Word;

namespace CodeCounsel.Office.WordSourceViewer
{
    public partial class ThisAddIn
    {
        TaskPaneManager<TaskPane> _manager = null;

        public TaskPaneManager<TaskPane> TaskPaneManager
        {
            get
            {
                if (_manager == null)
                {
                    _manager = new TaskPaneManager<TaskPane>(
                        new TaskPaneFactory());
                }
                return _manager;
            }
        }

        public bool ShowFullSource { get; set; }

        internal void ClearTaskPanes()
        {
            foreach (TaskPane taskPane in TaskPaneManager.GetTaskPanes())
            {
                taskPane.Clear();
            }
        }

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            ShowFullSource = false;
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        class TaskPaneFactory
            : TaskPaneManager<TaskPane>.ITaskPaneFactory
        {
            public string CreateTitle(TaskPane taskPane)
            {
                return "Source View";
            }

            public TaskPane CreateNewTaskPane(
                Document document, Window window)
            {
                TaskPane pane = new TaskPane();
                pane.Document = document;
                return pane;
            }
        }

        #region VSTO generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InternalStartup()
        {
            this.Startup += new System.EventHandler(ThisAddIn_Startup);
            this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
        }
        
        #endregion
    }
}
